# os模块
import os, shutil
# 拼接路径
# 会根据操作系统的不同拼接出斜杠\或者反斜杠/,所以以后路径尽量使用拼接的
path = os.path.join("xx", "yy", "zz")
print("拼接路径：", path)
# 获取上级目录
folder_path = os.path.dirname(path)
print("上级目录：", folder_path)
# 项目操作时读取绝对路径
print("__file__:", __file__)
# 为了防止__file__不是当前目录用的，所以使用abspath
abspath = os.path.abspath(__file__)
print("绝对abspath:", abspath)
# 使用上级目录，然后拼接目录，这样不管放在哪都可以读取到 防止绝对路径写死
folder_path = os.path.dirname(abspath)
path = os.path.join(folder_path, "06-os和shutil模块.py")
print("path：", path)
# 判断路径是否存在
print("判断路径是否存在:", os.path.exists("c:/11.txt"))
# 创建文件夹 makedirs
# 如果上级目录不存在会报错，重复创建也会报错
if not os.path.exists("C:/Users/Administrator/Desktop/python测试创建文件夹"):
    os.makedirs("C:/Users/Administrator/Desktop/python测试创建文件夹")
# 判断是否文件夹
print("是否是文件夹:", os.path.isdir("C:/Users/Administrator/Desktop/python测试创建文件夹"))
# 修改文件名
# old_file = "C:/Users/Administrator/Desktop/python测试创建文件夹"
# new_file = "C:/Users/Administrator/Desktop/python测试创建文件夹1"
# print("修改文件名：", shutil.move(old_file, new_file))
# 拷贝文件夹
# shutil.copytree(old_file, new_file)
# 拷贝文件
# shutil.copy(old_file, new_file)
# 压缩和解压缩 base_name 压缩后的文件  root_dir 需要压缩的文件
shutil.make_archive(base_name="C:/Users/Administrator/Desktop/易语言版本-奇灵剑", format="zip", root_dir="C:/Users/Administrator/Desktop/易语言版本-奇灵剑V1.1")
# 解压缩
shutil.unpack_archive("C:/Users/Administrator/Desktop/易语言版本-奇灵剑V1.1.zip", extract_dir="C:/Users/Administrator/Desktop/易语言版本-奇灵剑", format="zip")

# 删除文件夹 shutil.rmtree 不管有没有文件都可以删除
shutil.rmtree("C:/Users/Administrator/Desktop/python测试创建文件夹")
# 删除文件  os.remove(file_pth)
# 查看目录下的所有文件和文件夹（一级目录）
folder_path = os.path.dirname(os.path.abspath(__file__))
path_lst = os.listdir(folder_path)
print("查看一级目录下的所有文件和文件夹：")
for path_name in path_lst:
    print(path_name)
# 查看目录下的所有文件和文件夹（多级目录）
print("查看多级目录下的所有文件和文件夹：")
# in_path:当前文件夹路径
# folder_path:当前文件夹里面的文件夹名称
# name_list:当前文件夹里面的文件
for in_path, folder_path, name_list in os.walk("D:/python/pythonProject/game"):
    print(in_path,folder_path,name_list)

